package org.idea.dao.impl;

import org.idea.dao.UserInfoDao;
import org.idea.entity.UserInfo;
import org.idea.util.DbUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * UserInfoDao接口的实现类
 *
 * @Author zqx
 * @Date 2023-10-11
 */
public class UserInfoDaoImpl implements UserInfoDao {
    @Override
    public UserInfo selectUserInfo(String uname, String upass) {
        UserInfo userInfo = null;
        // 第一：定义要操作数据库的SQL语句
        String sql = "select * from userinfo where username=? and password=?";

        // 第二：获取连接对象
        Connection conn = DbUtil.getConnection();
        PreparedStatement pstmt = null;
        ResultSet rst = null;
        try {
            // 第三：预编译SQL语句
            pstmt = conn.prepareStatement(sql);

            // 第四：填充占位符
            pstmt.setString(1, uname);
            pstmt.setString(2, upass);

            //第五：执行SQL语句
            rst = pstmt.executeQuery();

            // 第六：对结果进行处理
            if (rst.next()) {
                // 1.如果查询到数据，则实例化用户对象
                userInfo = new UserInfo();

                // 2.读到各列数据，并初始化用户对象
                userInfo.setId(rst.getInt(1));
                userInfo.setUsername(rst.getString(2));
                userInfo.setName(rst.getString(4));
                userInfo.setSex(rst.getString(5));
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            // 第七：关闭对象
            DbUtil.close(conn, pstmt, rst);
        }

        return userInfo;
    }

    @Override
    public int insertUserInfo(UserInfo userInfo) {
        int r = 0;
        // 第一：定义要操作数据库的SQL语句
        String sql = "insert into userinfo(username,password,phone,address,email) values (?,?,?,?,?)" ;
        // 第二：获取连接对象
        Connection conn = DbUtil.getConnection();

        PreparedStatement pstmt = null ;
        try {
            // 第三：预编译SQL语句
            pstmt = conn.prepareStatement(sql);
            // 第四：填充占位符
            pstmt.setString(1,userInfo.getUsername());
            pstmt.setString(2,userInfo.getPassword());
            pstmt.setString(3,userInfo.getPhone());
            pstmt.setString(4,userInfo.getAddress());
            pstmt.setString(5,userInfo.getEmail());
            // 第五：执行SQL语句
            r = pstmt.executeUpdate() ;
            // 第六：对结果进行处理
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            // 第七：关闭对象
            DbUtil.close(conn,pstmt,null);
        }
        return r;
    }
}
